package com.yida.gwj.config.mapper;

import com.yida.gwj.api.domain.GwjConfCalculateData;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 计算金额算法Mapper接口
 *
 * @author lqq
 * @date 2022-12-13
 */
public interface GwjConfCalculateDataMapper {

	/**
	 * 查询计算金额算法列表
	 *
	 * @param gcCalculateData 计算金额算法
	 * @return 计算金额算法集合
	 */
	public List<GwjConfCalculateData> selectGwjConfCalculateDataList(GwjConfCalculateData gcCalculateData);

	/**
	 * 查询计算金额算法
	 *
	 * @param calculateDataId 计算金额算法主键
	 * @return 计算金额算法
	 */
	public GwjConfCalculateData selectByGwjConfCalculateDataId(Long calculateDataId);
	
	/**
	 * 查询计算金额算法
	 *
	 * @param gcCalculateData 计算金额算法
	 * @return 计算金额算法
	 */
	public GwjConfCalculateData selectGwjConfCalculateData(GwjConfCalculateData gcCalculateData);
	
	/**
	 * 查询计算金额算法是否存在
	 * @param gcCalculateData 计算金额算法
	 * @return 结果
	 */
	public int hasGwjConfCalculateData(GwjConfCalculateData gcCalculateData);
	
	/**
	 * 新增计算金额算法
	 *
	 * @param gcCalculateData 计算金额算法
	 * @return 结果
	 */
	public int insertGwjConfCalculateData(GwjConfCalculateData gcCalculateData);

	/**
	 * 修改计算金额算法
	 *
	 * @param gcCalculateData 计算金额算法
	 * @return 结果
	 */
	public int updateGwjConfCalculateData(GwjConfCalculateData gcCalculateData);

	/**
	 * 批量修改计算金额算法
	 *
	 * @param gcCalculateDatas 计算金额算法
	 * @return 结果
	 */
	public int updateBatchByGwjConfCalculateData(List<GwjConfCalculateData> gcCalculateDatas);

	/**
	 * 删除计算金额算法
	 *
	 * @param gwjConfCalculateDataId 计算金额算法主键
	 * @return 结果
	 */
	public int deleteByGwjConfCalculateDataId(Long gwjConfCalculateDataId);

	/**
	 * 批量删除计算金额算法
	 *
	 * @param gwjConfCalculateDataIds 需要删除的数据主键集合
	 * @return 结果
	 */
	public int deleteByGwjConfCalculateDataIds(Long[] gwjConfCalculateDataIds);

	/**
	 * 查询计算标准值数据
	 *
	 * @param calculateTypeId 计算类型ID
	 * @param areaId          地区ID
	 * @param buildTypeId     楼栋类型ID
	 * @return 计算金额算法
	 */
	GwjConfCalculateData selectCalculateDataByCalculateTypeIdAndAreaIdAndBuildTypeId(@Param("calculateTypeId") Long calculateTypeId, @Param("areaId") Long areaId, @Param("buildTypeId") Integer buildTypeId);

}
